package com.rabbit.service;

import com.github.pagehelper.PageInfo;
import com.rabbit.exception.BusinessException;
import com.rabbit.vo.req.DictDataReq;
import com.rabbit.vo.res.DictDataRes;

/**
 * <h1>字典键值管理业务接口</h1>
 *
 * @author zjw
 * @date 2022/02/20 17:32
 */
public interface DictDataService {

    /**
     * 字典键值管理列表查询
     *
     * @param dictDataReq 查询参数封装
     * @return PageInfo 分页对象
     */
    PageInfo<DictDataRes> queryDictDataList(DictDataReq dictDataReq);

    /**
     * 删除字典键值
     *
     * @param dictDataReq 字典键值信息
     */
    void deleteDictData(DictDataReq dictDataReq);

    /**
     * 修改字典键值状态
     *
     * @param dictDataReq 字典键值信息
     */
    void updateDictDataEnabled(DictDataReq dictDataReq);

    /**
     * 根据字典键值编号查询字典信息
     *
     * @param dataId 字典键值编号
     * @return DictDataRes 字典键值信息
     */
    DictDataRes queryDictDataById(Long dataId);

    /**
     * 添加/更新时 数据校验
     *
     * @param dictDataReq 字典键值添加/更新数据封装
     * @param operType    操作类型 1新增 2修改
     * @throws BusinessException 业务异常
     */
    void checkUnique(DictDataReq dictDataReq, int operType) throws BusinessException;

    /**
     * 添加字典键值
     *
     * @param dictDataReq 字典键值信息
     */
    void addDictData(DictDataReq dictDataReq);

    /**
     * 更新字典键值
     *
     * @param dictDataReq 字典键值信息
     */
    void updateDictData(DictDataReq dictDataReq);
}
